#!/usr/bin/python
# -*- coding: utf-8 -*-
#
#       File: db.py
#       Author: Finnur Smári Torfason
#       Date: 05/01/2012
#       Hér eru info föllin notuð til að sækja upplýsingar
#       í gagnagrunn fiskistofu
#

import sqlite3, os.path, wx
from event import ResultEvent
from utils import db, info
from time import sleep

#
# Fallið notar föllin úr afla_func.py til
# að sækja landanir allra skipa, og skrifa
# í gagnagrunn
#
def main(kvtime, notify_window, check, currKvtime): # Það ætti að taka inn kvtime
  
  shipInfo = []
  landingInfo = []
  landingTotal = []
  i, j, k, l = 0, 0, 0, 0
  exists = db.checkDbExists()
	
  if (not check) and exists:
    shipInfo = db.getShipInfo(kvtime)
    if not shipInfo:
      wx.PostEvent(notify_window, ResultEvent('Ekki til upplýsingar um skip frá þessu fiskveiðiári.\n Hakaðu við Uppfæra skipaskrárnúmer!\n', 0))
  else:
    if not exists:
      wx.PostEvent(notify_window, ResultEvent('Gagnagrunnur ekki til, bý til nýjann\n', 0))
		
    while i < 10100: # Sæki grunn upplýsingar um öll skip: 10100
      wx.PostEvent(notify_window, ResultEvent('Athuga hvort bátur með skipaskrárnúmer ' + str(i) + ' sé til. \n', 0))
      gatherInfo = info.gatherInfo(i,kvtime)

      sleep(0.5)
			
      if gatherInfo[1] == 1: # Ef error
        wx.PostEvent(notify_window, ResultEvent('Villa! Reyni aftur. \n', 0))
        i = i - 1
      elif None not in gatherInfo[0]: # Annars
        shipInfo.append(gatherInfo[0])
      i = i + 1
  
  while j < len(shipInfo): # Sæki upplýsingar um landanir báta
    if shipInfo[j][4] == 1: # Báturinn á löndun á árinu
      wx.PostEvent(notify_window, ResultEvent('\nSæki löndunarupplýsingar um bát nr. ' + str(shipInfo[j][0]), 0))
      gatherLanding = info.gatherLanding(shipInfo[j][0], kvtime)
			
      sleep(0.5)
      
      if gatherLanding[1] == 1:
        wx.PostEvent(notify_window, ResultEvent('Villa! Reyni aftur. \n', 0))
        j = j - 1
      else: 
        landingInfo.append(gatherLanding[0])
    j = j + 1
	
  wx.PostEvent(notify_window, ResultEvent('\n\n', 0))

	
  while k < len(landingInfo): # Sæki heildarafla og afla einstakra fisktegunda
    l = 0
		
    while l < len(landingInfo[k][1]):
      wx.PostEvent(notify_window, ResultEvent('Löndun nr. ' + str(l+1) + ' hjá bát með númerið ' +  str(landingInfo[k][0]) + '\n', 0))
      landing = info.landingInfo(str(landingInfo[k][1][l]))
			
      sleep(0.5)
      
      if landing[1] == 1: # Ef error
        wx.PostEvent(notify_window, ResultEvent('Villa! Reyni aftur. \n', 0))
        l = l - 1
      else: # Annars
        landingTotal.append((landingInfo[k][0], landingInfo[k][1][l], landingInfo[k][2][l], landingInfo[k][3][l], landingInfo[k][4][l], landing[0][0], landing[0][1], landing[0][2], kvtime))
      l = l + 1
    k = k + 1

  db.writeToDB(shipInfo, landingTotal, kvtime, notify_window)

